package com.clps.rulesregulations.dao;

import com.clps.rulesregulations.domain.Resource;
import com.clps.rulesregulations.util.ResourceTree;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * 资源数据接口
 *
 * @author zhangchao
 * @date 2018-11-06
 */
@Repository
@Mapper
public interface ResourceDao {
    /**
     * 根据条件查询资源
     * @param condition
     * @return
     */
    List<Resource> findResourcesByCondition(Map<String, Object> condition);

    /**
     * 根据角色ID查询资源
     * @param roleId
     * @return
     */
    List<Resource> findResourcesByRoleId(Integer roleId);

    /**
     * 加载用户资源
     * @param map
     * @return
     */
    List<Resource> loadUserResources(Map<String, Object> map);

    /**
     * 查找所有资源
     * @return
     */
    List<Resource> findAll();

    /**
     * 添加资源
     * @param resource
     */
    void addResource(Resource resource);

    /**
     * 删除资源
     * @param resourceId
     */
    void delResource(Integer resourceId);
    /**
     * 删除资源
     */
    void deleteAll(String[] ArrayDATA_IDS);
    /**
     * 根据资源ID查询资源
     * @param resourceId
     * @return
     */
    Resource findResourceById(Integer resourceId);
    /**
     * 根据url查询资源
     * @param url
     * @return
     */
    Resource findResourceByUrl(String url);

    /**
     * 更新资源
     * @param resource
     */
    void updateResource(Resource resource);

    /**
     * 查找资源树
     * @return
     */
    LinkedList<ResourceTree> findAllAsTree();

    /**
     * 根据条件查询资源
     *
     * @return
     */
    List<Resource> findMenus();

    /**
     * 添加资源
     *
     * @param menu
     */
    void saveMenu(Resource menu);
}
